Road Traffic Accident (RTA) is an unexpected event that unintentionally occurs on the road which involves vehicles and other road users that causes casualty or loss of property. While developed rich nations have stable or declining road traffic death rates through coordinated correcting efforts from different departments, developing countries still lose 1–3% of their gross national product (GNP) due to traffic casualties. World Health Organization (WHO) fears, unless immediate action is taken, road crashes will rise to the fifth leading cause of death by 2030, resulting in an estimated 2.4 million fatalities per year.
India has a well-knit and coordinated system of transport which plays an essential role in developing economic activities by promoting the fair distribution of produced goods and services and the movement of people.
The number of ‘Traffic Accidents’ in the country has decreased from 4,74,638 in 2018 to 4,67,171 in 2019. (However, the rate of deaths in road accidents per thousand vehicles, i.e. 0.6, has remained the same as in 2018).
Month-wise patterns of traffic accidents reveal that a maximum number of ‘Traffic Accidents’ have occurred in January, which accounted for 9.2% (42,896 out of 4,67,171).
Time-wise analysis of traffic accidents reveals that the maximum number of ‘Traffic Accidents’ have taken place during 18:00 hrs – 21:00 hrs and 15:00 hrs – 18:00 hrs, accounting for 18.7% (87,271) and 17.1% (79,935) of total traffic accidents (4,67,171) respectively during the year 2019.
A total of 4,37,396 road accident cases were reported during 2019. Road accident cases in the country have decreased from 4,45,514 in 2018 to 4,37,396 in 2019 [Table1A.1]. The fatalities in road accidents have increased by 1.3% (from 1,52,780 in 2018 to 1,54,732 in 2019). It is observed that the rate of deaths per thousand vehicles in 2019 increased slightly to 0.61 in 2019.
4,37,396 road accidents caused 1,54,732 deaths and injuries to 4,39,262 persons during 2019. Generally, road accidents have caused more injuries than deaths, but in Mizoram, Punjab and Uttar Pradesh, road accidents cause more deaths than persons injured.
During 2019, two-wheelers have accounted for maximum fatal road accidents (58,747 deaths), contributing 38.0% of total road accidental deaths, followed by trucks/lorries.
The month-wise distribution of ‘Road Accidents’ shows that most road accidents were reported in January (40,508 cases), contributing 9.3% of total road accidents. Most accidents this month (January) have been reported in Madhya Pradesh, accounting for 12.8% of total accidents reported (5,205 out of 40,548 cases) in January.
Causes analysis of road accidents revealed that most road accidents were due to overspeeding, accounting for 59.6% of total accidents (2,60,898 out of 4,37,443 cases), which caused 86,241 deaths and injuries to 2,71,581 persons. Dangerous/careless driving or overtaking caused 1,12,519 accidents (25.7% of total accidents), resulting in 42,557 deaths and injuries to 1,06,555 persons in 2019. 2.6% (11,303 out of 4,37,443 cases) of such accidents were due to poor weather conditions. Driving under the influence of drugs/alcohol contributed to 1.7% of total accidents, resulting in injuries to 6,675 persons & 2,972 deaths in the country.
A total of 69,064 traffic accidents were reported in 53 cities during 2019. 69,064 traffic accidents caused injuries to 59,070 persons and 16,538 deaths. Delhi City reported the maximum number of fatalities in traffic accidents (2,207 deaths), followed by Chennai (1,252 deaths) and Jaipur (859 deaths). As per the road-wise classification of road accidents, 20.8% of total road accidents in 53 mega cities were reported on the National Highways. 27.4% of fatalities in road accidents were reported on the National Highways during 2019
from IPython.display import IFrame
IFrame(src='../_html/map_totalDied.html', width=700, height=600)
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import plotly.express as px
import plotly
plotly.offline.init_notebook_mode()
from urllib.request import urlopen
import json
# with urlopen('https://raw.githubusercontent.com/Subhash9325/GeoJson-Data-of-Indian-States/master/Indian_States') as response:
# counties = json.load(response)
with urlopen('https://raw.githubusercontent.com/nikhilkumarsingh/choropleth-python-tutorial/master/states_india.geojson') as response:
counties = json.load(response)
print(counties["features"][0].keys())
# Note that the loaded geoJSON must have an outermost key id. Note key id is not present here
dict_keys(['type', 'geometry', 'properties'])
for i in range(len(counties['features'])):
# Loop to add 'id' key
counties['features'][i]['id']=counties['features'][i]['properties']['st_nm']
# counties['features'][i]['id']=counties['features'][i]['properties']['NAME_1']
print(counties["features"][0].keys())
dict_keys(['type', 'geometry', 'properties', 'id'])
names = []
for i in range(len(counties['features'])):
names.append(counties['features'][i]['id'])
df = pd.read_csv("data/NCRB_ADSI-2020_Table_1A.9.csv")
df = df[(df['Category']=='State') + (df['Category']=='Union Territories')]
Note : In geoJSON data, there is no separate data for Ladakh and Jammu Kashmir. However, in csv file there are two separate rows. Therefore merging the rows of Ladakh and Jammu Kashmir in dataframe. Also in geoJSON file there are two places 'Daman & Diu' and 'Dadara & Nagar Havelli', however, there is only one row named 'D & N Haveli and Daman & Diu' in dataframe. Therefore a copy of that row is made and used for both the places.
id1=df.index[df['State/UT/City'] == 'Jammu & Kashmir'].tolist()[0]
id2=df.index[df['State/UT/City'] == 'Ladakh'].tolist()[0]
temp = df.loc[[id1,id2]]
temp = pd.concat([temp, (temp.sum(axis=0)).to_frame().transpose()])
temp = temp.drop(labels=[id1,id2],axis=0)
temp = temp.rename(index={0:id1})
temp.loc[id1,'Si. No.'] = str(id1)
temp.loc[id1,'Category'] = 'Union Territories'
temp.loc[id1,'State/UT/City'] = 'Jammu & Kashmir & Ladakh'
df = df.drop(labels=[id1,id2])
df = pd.concat([df,temp])
id1=df.index[df['State/UT/City'] == 'D & N Haveli and Daman & Diu'].tolist()[0]
temp = df.loc[id1].to_frame().transpose()
temp['State/UT/City']='D & N Haveli and Daman & Diu-2'
df = pd.concat([df,temp])
df = df.sort_values('State/UT/City', axis=0)
df.head()
df_cols = list(df.columns)
for i in range(3,len(df_cols)):
df[df_cols[i]]=df[df_cols[i]].astype('int64')
names.remove('NCT of Delhi')
names.append('Delhi')
names.sort()
# Create a dictionary to map state name of dataframe to geo location
df2geo = {}
df_name = list(df['State/UT/City'])
for i in range(df.shape[0]):
df2geo[df.iloc[i,2]]=names[i]
df2geo['Delhi (UT)']='NCT of Delhi'
df['name2geo']=df['State/UT/City'].map(df2geo)
fig = px.choropleth_mapbox(df, geojson=counties, locations='name2geo',
color='Grand Total - Died',
color_continuous_scale="Viridis",
mapbox_style="carto-positron",
zoom=3, center = {"lat": 20.5937, "lon": 78.9629},
opacity=0.5
)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()